#ifndef NANE_SOUNDDECODER_H
#   define  NANE_SOUNDDECODER_H

#   include "nane/core/SubSystemProduct.h"

namespace nane 
{
    class SoundDecoder
        : public SubSystemProduct
    {
    protected:
        class Implementation;
        friend class SoundCodecSystem;

    public:
        SoundDecoder( const NullType& = NullPtr );
        SoundDecoder( Implementation* _impl );
        SoundDecoder( const SoundDecoder& _other );

    public:
        uint32 GetFrequency();
        uint16 GetChannels();
        uint16 GetBitsPerSample();
        uint32 GetLengthInBytes();
        uint32 Read( byte* _buffer, uint32 _count );

    private:
        Implementation* m;
    };
}   // namespace nane

#endif	// NANE_SOUNDDECODER_H
